package ubo.master1.jeupoker.gui;

import java.awt.Color;
import java.awt.Component;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.swing.JFrame;

/**
 * Entre du programme 
 * @author Groupe7
 */
public class Main extends JFrame {

    /** Positionner les composante sur la table  */
    private final GridBagConstraints gc;
    /** Centre de la table. 
    Affichage des Cartes et au dessu les somme de la mise  */
    private final BoardPanel boardPanel;
    /** Controler les actions des utilisateur Exemple : Fold, Check , Raise ... */
    private final ControlPanel controlPanel;
    /** Dictionnaire de joueurs . */
    private final Map<String, PaletteJoueur> playerPanels;

    public Main() throws IOException {
        super("Jeu de Poker");
        //    super.getContentPane().add(new LayeredExample());
        super.setSize(1000, 640);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        File directorycurr = new File("..");
        String TableBackround = directorycurr.getCanonicalPath();

        setContentPane(new JPanelImageBg(TableBackround + "\\JeuxPoker\\src\\images\\TableBuckround.jpg"));
        setLayout(new GridBagLayout());

        gc = new GridBagConstraints();

        controlPanel = new ControlPanel();

        boardPanel = new BoardPanel(controlPanel);
        //Positionner 
        addComponent(boardPanel, 1, 1, 1, 1);

        playerPanels = new HashMap<String, PaletteJoueur>();
        int i = 0;
        // Ajouter des utilisateur sur la table 
        for (i = 0; i <= 5; i++) {
            PaletteJoueur panel = new PaletteJoueur(null);

            playerPanels.put("user" + i, panel);
            switch (i) {
                case 0:
                    // Joueur position nord sur la table

                    addComponent(panel, 1, 0, 1, 1);
                    break;
                case 1:
                    // Joueur coté droite sur la table
                    addComponent(panel, 2, 1, 1, 1);
                    break;
                case 2:
                    // Joueur coté sud droite.
                    addComponent(panel, 2, 2, 1, 1);
                    break;
                case 3:
                    // Joueur coté Gauche
                    addComponent(panel, 0, 1, 1, 1);
                    break;
                case 4:
                    // Joueur coté sur gauche.

                    addComponent(panel, 0, 2, 1, 1);
                    break;

                case 5:
                    // Controleur position 
                    JoueurIcon test = new JoueurIcon("Controlleur.png");
                    addComponent(test, 1, 2, 1, 1);
               
                    break;
                default:
                
            }
        }
        setBackground(UIConfiguration.TABLE_COLOR);
        setResizable(true);
        setLocationRelativeTo(null);
        setVisible(true);



    }

    /**
     * Point d'entré de l'application .
     * 
     * @param args
     *            ligne de  commmande 
     */
    public static void main(String[] args) throws IOException {
        new Main();
    }

    /**
     * Ajout de composant graphique .
     * 
     * @param component
     *           Le composant.
     * @param x
     *           La colone .
     * @param y
     *            La ligne.
     * @param width
     *            Espace entre colonnes .
     * @param height
     *           Espace entre lignes.
     */
    private void addComponent(Component component, int x, int y, int width, int height) {
        gc.gridx = x;
        gc.gridy = y;
        gc.gridwidth = width;
        gc.gridheight = height;
        gc.weightx = 0.0;
        gc.weighty = 0.0;
        gc.anchor = GridBagConstraints.CENTER;
        gc.fill = GridBagConstraints.NONE;
        getContentPane().add(component, gc);
    }
}
